package com.cloud.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * @version v1.0
 * @author: TianXiang
 * @description:
 * @date: 2020/11/6
 */


@Aspect
@Component
@Order(1)
public class UploadProgramAop {

    /**
     * 切面(切入点) 定义需要拦截的东西
     * 有两种表达式: 1. 使用 execution()   2. 使用 annotation()
     */
//    @Pointcut("execution(* com.cloud.service.impl.imports.ImportMovieUPLOADServiceImpl.*(..))")
    @Pointcut("@annotation(com.cloud.annotations.UploadProgressAnnotation)")
    public void pointCut() {}

    /**
     * 针对切面增强的动作, 前置通知
     */
    @Before("pointCut()")
    public void doBefore(JoinPoint joinPoint) {
         System.out.println("进入方法前");
    }

    /**
     * 针对切面增强的动作, 后置通知
     */
    @After("pointCut()")
    public void doAfter(JoinPoint joinPoint) {
        System.out.println("方法结束了");
    }
}
